A Specification and Descripiton Language programozási nyelv (SDL)

Típusok, típuskonstrukciók

Az SDL erősen típusos nyelv, azaz minden változónak meg kell adnunk a típusát, és az adott változón csak a típusának megfelelő műveleteket hajthatjuk végre. Egy SDL-es típus az alábbiakból áll:

Az alább felsorolt beépített típusok közül csak azokhoz került magyarázat, amelyek valamilyen szempontból nem a hagyományos nyelvekből megszokottak:

Synonym

A C nyelvek define-jához hasonló, fordítási időben behelyettesített szinonima. Segítségével beszédes neveket lehet adni értékeknek, ezzel is javítva a kód olvashatóságát.

SYNONYM Pi Real = 3.14159;

Newtype

A NewType kulcsszóval új diszkrét típust, pl. enumot vezethetünk be. Az új típuson automatikusan értelmezettek az „egyenlő”, a „nem egyenlő” és az „értékadó” operátorok. A típusok összehasonlításánál erős típusellenőrzést alkalmaz a nyelv.

NEWTYPE WeekDay LITERALS Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday; ENDNEWTYPE WeekDay;

Syntype

A Syntype kulcsszóval egy új résztípust hozhatunk létre. Ezen új típus kompatibilis az alaptípusával, ám segítségével megszorításokat tehetünk az alaptípus értékhalmazára, vagy épp alapértelmezett értéket adhatunk az új típusnak.

SYNTYPE RestrictedReal = Real DEFAULT 42 CONSTANTS <-7, 11:34, 42, >=44 ENDSYNTYPE RestrictedReal;

A fenti típus alaptípusa Real, a lehetséges értékei a -7-nél kisebb számok, a 11 és 34 közti számok, a 42, valamint a 44-nél nagyobb számok. Ezen felül a típus alapértelmezett értéke 42.

Tömbök

A SDL-es tömbök deklarálása az ADA-hoz hasonló módon történik. Két típust kell megadni, az index típusát és az értékek típusát. Ebből kifolyólag csak azonos típusú elemeket tárolhat.

NEWTYPE CharacterArray ARRAY(Natural, Character) ENDNEWTYPE CharacterArray;

Struktúrák

Az SDL struktúrái a C-ben megszokotthoz nagyon hasonlóak.

NEWTYPE MyStruct STRUCT Field1 Integer; Field2, Field3 Char; ENDNEWTYPE MyStruct;

Importált típusok

A kódon belül deklarált típusokon felül lehetőség van külső, például XML fájlokból generált .pr fájlokból típusokat include-olni.